home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 3 / Amiga Tools 3.iso / rexx / project.raz < prev    next >
Text File  |  1995-02-09  |  4KB  |  143 lines

  1. /** $VER: Project.raz 1.3 (9.2.95)
  2.  **
  3.  ** Permet de mémoriser l'état d'un projet en cours : les fenêtres qui
  4.  ** sont ouvertes et celles qui sont iconifiées, leurs position/taille
  5.  ** et le fichier qu'elles éditent.
  6.  ** Permet aussi de relire un projet et d'ouvrir les fenêtres dans
  7.  ** l'état où elles étaient.
  8.  **
  9.  ** Option acceptées par le script : Project.raz <mode> <port> <name>
  10.  ** <port> est le nom du port ARexx d'une tâche AZur (optionnel).
  11.  ** <name> est un nom de fichier comportant ou pas le chemin complet.
  12.  ** Si rien n'est indiqué name est égal à ".project".
  13.  ** <mode> est pour indiquer soit la sauvegarde soit la relecture.
  14.  ** <mode> peut avoir les valeurs suivantes :
  15.  ** - SAVE      Sauver dans le répertoire courant sous le nom <name>
  16.  ** - SAVEAS    Sauver dans le répertoire/nom de son choix
  17.  ** - OPEN      Relire <name>
  18.  ** - OPENAS    Relire le projet de son choix
  19.  **
  20.  ** En mode sauvegarde les fichiers modifiés sont sauvegardés
  21.  ** automatiquement.
  22.  **/
  23.  
  24. OPTIONS RESULTS
  25.  
  26. PARSE ARG mode port name
  27.  
  28. IF (port = '') THEN DO; GetMasterPort; port = RESULT; END
  29. IF (name = '') THEN name = ".project"
  30.  
  31. mode = UPPER( mode )
  32. port = UPPER( port )
  33. name = STRIP( name )
  34. ADDRESS VALUE port
  35.  
  36. /*------ Mémorise les ports des tâches d'édition  ------*/
  37.  
  38. GetPortList; portlist = RESULT
  39.  
  40. windownum = 0
  41. win = 1
  42. DO WHILE (portlist ~= '')
  43.     PARSE VAR portlist portname.win ',' portlist
  44.     portname.win = STRIP(portname.win,,'"')
  45.     win = win + 1
  46.     windownum = windownum + 1
  47. END
  48.  
  49. /*------ On agit selon le mode demandé ------*/
  50.  
  51. errmsg = ''
  52. SELECT
  53.     WHEN mode = "SAVE" THEN DO
  54.         CALL ProjectSave
  55.     END
  56.  
  57.     WHEN mode = "SAVEAS" THEN DO
  58.         ReqFile '"Sauvegarder le projet"' PATH name PAT "#?.proj"
  59.         IF (RC > 0) THEN EXIT
  60.         name = result
  61.         suffix = RIGHT(name,5)
  62.         IF (suffix ~= ".proj") THEN name = name||".proj"
  63.         CALL ProjectSave
  64.     END
  65.  
  66.     WHEN mode = "OPEN" THEN DO
  67.         CALL ProjectOpen
  68.     END
  69.  
  70.     WHEN mode = "OPENAS" THEN DO
  71.         ReqFile '"Ouvrir un projet"' PATH name PAT "#?.proj"
  72.         IF (RC > 0) THEN EXIT
  73.         name = RESULT
  74.         CALL ProjectOpen
  75.     END
  76.  
  77.     OTHERWISE errmsg = "Utilisation : Project.raz <mode> <port> <name>\n\n<mode> : SAVE|SAVEAS|OPEN|OPENAS\n<port> : nom d'une tâche AZur (optionnel)\n<name> : nom de fichier (optionnel)"
  78. END
  79.  
  80. IF (errmsg ~= '') THEN 'ReqMulti "Gestion de projet" CONVERT REQWIN TEXT' errmsg
  81. EXIT
  82.  
  83. /*=====================================================================*/
  84.  
  85. ProjectSave: PROCEDURE EXPOSE name windownum portname. errmsg
  86.     IF (OPEN( file, name, 'W' ) ~= 0) THEN DO
  87.         CALL WRITELN( file, "File Format Version 1.0" )
  88.         DO i=1 TO windownum;
  89.             ADDRESS VALUE portname.i
  90.  
  91.             GetFilePath
  92.             CALL WRITELN( file, RESULT )
  93.  
  94.             GetPri; priority = RESULT
  95.             GetReadonly; IF (RESULT = "ON") THEN readonly = "READONLY"; ELSE readonly = ""
  96.             CALL WRITELN( file, priority||" "||readonly )
  97.  
  98.             GetWinInfo WINDOW
  99.             CALL WRITELN( file, RESULT )
  100.         END
  101.         CALL CLOSE( file )
  102.     END
  103.     ELSE errmsg = "Ouverture impossible du fichier "||name||" en écriture"
  104. RETURN
  105.  
  106. ProjectOpen: PROCEDURE EXPOSE name windownum portname. errmsg port
  107.     DO i=1 TO windownum;
  108.         ADDRESS VALUE portname.i
  109.         Win2File SAME MODIFIED
  110.         WinClose FORCE
  111.     END
  112.  
  113.     ADDRESS COMMAND 'Wait 1 SEC'
  114.  
  115.     ADDRESS VALUE port
  116.     IF (OPEN( file, name, 'R' ) ~= 0) THEN DO
  117.         line = READLN( file ) /* read version of file format, futur use */
  118.         DO UNTIL (EOF( file ))
  119.             line = READLN( file )
  120.             IF (EOF( file ) ~= 0) THEN BREAK
  121.             name = line
  122.  
  123.             line = READLN( file )
  124.             IF (EOF( file ) ~= 0) THEN BREAK
  125.             PARSE VAR line priority readonly
  126.  
  127.             line = READLN( file )
  128.             IF (EOF( file ) ~= 0) THEN BREAK
  129.  
  130.             IF EXISTS( name ) THEN DO
  131.                 nowindow = ""
  132.                 iconify = ""
  133.                 IF (LENGTH( line) > 0) THEN PARSE VAR line icon left top width height minwidth minheight .
  134.                 ELSE nowindow = "NOWINDOW"
  135.                 IF (icon = "ON") THEN iconify = "ICONIFY"
  136.                 File2NewWin '"'name'"' nowindow iconify readonly 'PRI' priority 'LEFT' left 'TOP' top 'WIDTH' width 'HEIGHT' height
  137.             END
  138.         END
  139.         CALL CLOSE( file )
  140.     END
  141.     ELSE errmsg = "Ouverture impossible du fichier "||name||" en lecture"
  142. RETURN
  143.